`:top
`*`!SQLite`!`* (prononcé [`F33f`_`[ɛs.ky.ɛl.ajt`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Alphabet_phonétique_international]`_`f]) est une `F33f`_`[bibliothèque`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Bibliothèque_logicielle]`_`f écrite en `F33f`_`[langage`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Langage_de_programmation]`_`f `F33f`_`[C`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=C_(langage)]`_`f qui propose un `F33f`_`[moteur`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Moteur_de_base_de_données]`_`f de `F33f`_`[base de données relationnelle`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Base_de_données_relationnelle]`_`f accessible par le langage `F33f`_`[SQL`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Structured_Query_Language]`_`f. SQLite implémente en grande partie le standard `F33f`_`[SQL-92`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Structured_Query_Language]`_`f et des `F33f`_`[propriétés ACID`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Transaction_informatique]`_`f.
Contrairement aux `F33f`_`[serveurs`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Serveur_informatique]`_`f de bases de données traditionnels, tels que `F33f`_`[MySQL`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=MySQL]`_`f, `F33f`_`[MariaDb`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=MariaDB]`_`f ou `F33f`_`[PostgreSQL`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=PostgreSQL]`_`f, sa particularité est de ne pas reproduire le schéma habituel `F33f`_`[client-serveur`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Client-serveur]`_`f mais d'être directement intégrée aux `F33f`_`[programmes`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Programme_informatique]`_`f. L'intégralité de la `F33f`_`[base de données`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Base_de_données]`_`f (déclarations, `F33f`_`[tables`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Table_(base_de_données)]`_`f, `F33f`_`[index`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Index_(base_de_données)]`_`f et données) est stockée dans un `F33f`_`[fichier`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Fichier_informatique]`_`f `F33f`_`[indépendant de la plateforme`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Logiciel_multiplateforme]`_`f.
`F33f`_`[D. Richard Hipp`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=D._Richard_Hipp]`_`f, le créateur de SQLite, a choisi de mettre cette bibliothèque ainsi que son `F33f`_`[code source`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Code_source]`_`f dans le `F33f`_`[domaine public`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Domaine_public_(propriété_intellectuelle)]`_`f, ce qui permet son utilisation sans restriction aussi bien dans les projets `F33f`_`[open source`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Open_source]`_`f que dans les projets `F33f`_`[propriétaires`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Propriété_intellectuelle]`_`f. Le créateur ainsi qu'une partie des développeurs principaux de SQLite sont employés par la société `F33f`_`[américaine`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=États-Unis]`_`f Hwaci`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f].
SQLite est le moteur de base de données le plus utilisé au monde, grâce à son utilisation :
• dans de nombreux `F33f`_`[logiciels`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Logiciel]`_`f grand public comme `F33f`_`[Firefox`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Mozilla_Firefox]`_`f, `F33f`_`[Skype`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Skype]`_`f, `F33f`_`[Google Gears`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Gears]`_`f,
• dans certains produits d'`F33f`_`[Apple`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Apple]`_`f, d'`F33f`_`[Adobe`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Adobe_(entreprise)]`_`f et de `F33f`_`[McAfee`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=McAfee]`_`f,
• dans les `F33f`_`[bibliothèques`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Bibliothèque_logicielle]`_`f standards de nombreux langages comme `F33f`_`[PHP`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=PHP]`_`f ou `F33f`_`[Python`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Python_(langage)]`_`f.
De par son extrême légèreté (moins de 600 `F33f`_`[Kio`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Octet]`_`f`:cite-ref-about-sqlite-3-0[`F5bf`_`[3`#cite-note-about-sqlite-3]`_`f]), il est également très populaire sur les `F33f`_`[systèmes embarqués`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Système_embarqué]`_`f, notamment sur la plupart des `F33f`_`[smartphones`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Smartphone]`_`f et `F33f`_`[tablettes`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Tablette_tactile]`_`f modernes : les `F33f`_`[systèmes d'exploitation`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Système_d'exploitation]`_`f mobiles `F33f`_`[iOS`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=IOS]`_`f, `F33f`_`[Android`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Android]`_`f et `F33f`_`[Symbian`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Symbian_OS]`_`f l'utilisent comme base de données embarquée`:cite-ref-well-known-users-of-sqlite-4-0[`F5bf`_`[4`#cite-note-well-known-users-of-sqlite-4]`_`f]. Au total, on peut dénombrer plus d'un milliard de copies connues et déclarées de la bibliothèque`:cite-ref-5[`F5bf`_`[5`#cite-note-5]`_`f].
>>Contents
• `F0af`_`[Historique`#historique]`_`f
• `F0af`_`[Caractéristiques`#caract-ristiques]`_`f
• `F0af`_`[Base de données embarquée`#base-de-donn-es-embarqu-e]`_`f
• `F0af`_`[Compilateur et machine virtuelle`#compilateur-et-machine-virtuelle]`_`f
• `F0af`_`[Gestion des droits`#gestion-des-droits]`_`f
• `F0af`_`[Portabilité`#portabilit]`_`f
• `F0af`_`[Types de données`#types-de-donn-es]`_`f
• `F0af`_`[Contraintes`#contraintes]`_`f
• `F0af`_`[Déclencheurs`#d-clencheurs]`_`f
• `F0af`_`[Vues`#vues]`_`f
• `F0af`_`[Transactions`#transactions]`_`f
• `F0af`_`[Tables temporaires`#tables-temporaires]`_`f
• `F0af`_`[Tables virtuelles`#tables-virtuelles]`_`f
• `F0af`_`[Fonctions utilisateur`#fonctions-utilisateur]`_`f
• `F0af`_`[Index`#index]`_`f
• `F0af`_`[Pragmas`#pragmas]`_`f
• `F0af`_`[Adoption`#adoption]`_`f
• `F0af`_`[Différentes versions`#diff-rentes-versions]`_`f
• `F0af`_`[Utilisations`#utilisations]`_`f
• `F0af`_`[Systèmes d'exploitation`#syst-mes-d-exploitation]`_`f
• `F0af`_`[Notes et références`#notes-et-r-f-rences]`_`f
• `F0af`_`[Liens externes`#liens-externes]`_`f
-─
>>Historique
`F33f`_`[D. Richard Hipp`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=D._Richard_Hipp]`_`f et un collègue commencèrent la conception de SQLite début `F33f`_`[2000`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=2000_en_informatique]`_`f lorsqu'ils travaillaient chez `F33f`_`[General Dynamics`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=General_Dynamics]`_`f, alors en contrat avec l'`F33f`_`[US Navy`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=US_Navy]`_`f. SQLite devait être utilisée dans des `F33f`_`[missiles guidés`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Missile]`_`f, dans le but de remplacer des `F33f`_`[bases de données`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Base_de_données]`_`f `F33f`_`[IBM`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=IBM]`_`f `F33f`_`[Informix`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Informix]`_`f fonctionnant sur des machines `F33f`_`[HP-UX`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=HP-UX]`_`f. Le principal objectif était de pouvoir s'affranchir de toute installation ou administration : l'installation ou la mise à jour de la base de données Informix pouvait prendre une journée entière`:cite-ref-owens06-6-0[`F5bf`_`[6`#cite-note-owens06-6]`_`f].
En août 2000, la première version de SQLite est publiée. Elle utilisait `F33f`_`[gdbm`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Gdbm]`_`f (`F33f`_`[GNU`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=GNU]`_`f Database Manager) pour manipuler des `F33f`_`[arbres B`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Arbre_B]`_`f.
SQLite 2.0 supprime la dépendance à `F33f`_`[gdbm`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Dbm]`_`f et ajoute la prise en charge des transactions.
SQLite 3.0, produite avec l'aide d'`F33f`_`[AOL`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=America_Online]`_`f, est publiée en `F33f`_`[2004`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=2004_en_informatique]`_`f et ajoute, entre autres, la `F33f`_`[régionalisation`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Internationalisation_de_logiciel]`_`f (avec le support des collations et de l'`F33f`_`[Unicode`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Unicode]`_`f) et la déclaration des `F33f`_`[types de données`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Type_(informatique)]`_`f.
En 2011, Hipp annonce souhaiter ajouter une interface `F33f`_`[NoSQL`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=NoSQL]`_`f à SQLite[réf. souhaitée], ainsi que UnQL, un sur-ensemble fonctionnel de SQL, conçu pour les `F33f`_`[bases de données orientées document`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Base_de_données_orientée_documents]`_`f.[réf. souhaitée]
SQLite est l'un des quatre formats recommandés par la `F33f`_`[Bibliothèque du Congrès`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Bibliothèque_du_Congrès]`_`f pour le stockage à long terme des ensembles de données`:cite-ref-7[`F5bf`_`[7`#cite-note-7]`_`f]`:cite-ref-8[`F5bf`_`[8`#cite-note-8]`_`f].
>>Caractéristiques
>>>Base de données embarquée
La majorité des `F33f`_`[systèmes de gestion de base de données`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=SGBD]`_`f sont construits selon le `F33f`_`[paradigme`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Paradigme]`_`f `F33f`_`[client-serveur`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Client-serveur]`_`f, c'est-à-dire qu'une `F33f`_`[bibliothèque logicielle`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Bibliothèque_logicielle]`_`f cliente est intégrée et utilisée dans une ou plusieurs applications alors que le `F33f`_`[moteur de base de données`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Moteur_de_base_de_données]`_`f fonctionne dans un espace d'exécution qui lui est propre, voire sur une machine différente, en tant que `F33f`_`[service informatique`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Daemon_(informatique)]`_`f.
SQLite, au contraire, est directement intégrée dans l'application qui utilise sa bibliothèque logicielle, avec son moteur de base de données. L'accès à une `F33f`_`[base de données`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Base_de_données]`_`f avec SQLite se fait par l'ouverture du fichier correspondant à celle-ci : chaque base de données est enregistrée dans un fichier qui lui est propre, avec ses déclarations, ses tables et ses index mais aussi ses données.
Cette caractéristique rend SQLite intéressante comme alternative aux `F33f`_`[fichiers textes`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Fichier_texte]`_`f, utilisés comme moyen de stockage intégré dans beaucoup d'applications (`F33f`_`[paramètres`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Paramètre_(programmation_informatique)]`_`f, `F33f`_`[historique`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Historique_(informatique)]`_`f, `F33f`_`[cache`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Mémoire_cache]`_`f...), car elle rend l'accès aux données plus rapide, plus sécurisé, plus structuré, plus facile et totalement `F33f`_`[indépendant de la plateforme`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Multiplate-forme]`_`f, tout en ne portant pas atteinte à la facilité de déploiement de l'application qui l'utilise.
La suppression de l'intermédiaire entre l'application et les données permet également de réduire légèrement la latence d'accès aux données comparée aux systèmes utilisant le `F33f`_`[paradigme`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Paradigme]`_`f client-serveur.
Cependant, cette architecture pose plusieurs problèmes :
• lorsqu'un nombre important de clients accèdent à une même base, si un des clients commence la lecture d'une partie, la totalité de la base est bloquée en écriture pour les autres clients, et inversement si un des clients démarre l'écriture dans une partie, la totalité de la base est bloquée en lecture pour les autres clients. Ces derniers sont alors mis en attente durant ce laps de temps, ce qui peut être contre-performant ;
• il est très compliqué de répartir la charge sur plusieurs machines : l'utilisation d'un `F33f`_`[système de fichiers sur le réseau`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Système_de_fichiers]`_`f engendre des `F33f`_`[latences`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Latence_(informatique)]`_`f et un trafic considérable, du fait que la base doit être rechargée chez le client à chaque ouverture. Ce problème est encore plus important avec des `F33f`_`[sites web`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Site_web]`_`f où la base est rouverte pour chaque page demandée. De plus, il peut se produire des erreurs dans la `F33f`_`[synchronisation`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Synchronisation_de_fichiers]`_`f des `F33f`_`[verrous`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Verrou_(informatique)]`_`f sur les fichiers qui pourraient autoriser l'écriture simultanée à deux clients différents sur une même partie de la base et ainsi aboutir à la corruption de la base de données ;
• avec des bases de grande envergure, il est impossible de diviser la base en plusieurs parties ou fichiers dans le but de distribuer la charge sur plusieurs machines. Certains systèmes de fichiers, comme le `F33f`_`[FAT 32`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=FAT_32]`_`f, ont une taille maximale de fichier qui pourrait rapidement limiter l'expansion d'une base.
Il n'y a pas d'`F33f`_`[extension`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Extension_de_nom_de_fichier]`_`f propre aux fichiers de base de données de SQLite, mais il est courant de rencontrer des extensions comme `B100`F9d9.sqlite`f`b ou `B100`F9d9.db`f`b, parfois suivie du numéro de version de la bibliothèque (`B100`F9d9.sqlite3`f`b, `B100`F9d9.db2`f`b, etc.). Il est possible d'utiliser une base de données uniquement sauvegardée en `F33f`_`[mémoire vive`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Mémoire_vive]`_`f, sans créer de fichier de base de données sur le disque, via le nom de fichier spécial `B100`F9d9:memory:`f`b.
D'une manière générale, il est conseillé d'utiliser SQLite là où les données ne sont pas centralisées et où l'expansion de la taille de la base ne risque pas de devenir critique. Si la base de données a pour but de centraliser une grande masse de données et de les fournir à un grand nombre de clients, il est préférable d'utiliser des `F33f`_`[SGBD`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=SGBD]`_`f basés sur le paradigme client-serveur. SQLite a pour objectif de remplacer les fichiers texte et non les serveurs de base de données traditionnels`:cite-ref-about-sqlite-3-1[`F5bf`_`[3`#cite-note-about-sqlite-3]`_`f].
>>>Compilateur et machine virtuelle
Lorsqu'une requête SQL est transmise à SQLite par l'intermédiaire de l'`F33f`_`[interface de programmation`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Interface_de_programmation]`_`f, elle est `F33f`_`[compilée`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Compilation_(informatique)]`_`f avant d'être exécutée.
Le séquenceur du `F33f`_`[compilateur`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Compilateur]`_`f divise les commandes données en parties traitables séparément (une requête et sa sous-requête par exemple), celles-ci sont passées à l'`F33f`_`[analyseur syntaxique`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Analyse_syntaxique]`_`f qui s'occupe de décomposer les requêtes en différents objets qui représentent les différents ordres et clauses du langage SQL. Ces objets sont passés au générateur de code qui crée un code intermédiaire de bas niveau, ou `F33f`_`[bytecode`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Bytecode]`_`f.
Le code obtenu est un ensemble d'`F33f`_`[instructions`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Instruction_informatique]`_`f (137 instructions différentes) appelées `F33f`_`[OpCodes`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Langage_machine]`_`f`:cite-ref-9[`F5bf`_`[9`#cite-note-9]`_`f]. Celui-ci est lancé dans la `F33f`_`[machine virtuelle`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Machine_virtuelle]`_`f de SQLite, qui les voit comme de petits programmes décrivant des opérations de recherche, de lecture et de modifications des données`:cite-ref-10[`F5bf`_`[10`#cite-note-10]`_`f].
Lorsque la machine virtuelle interprète ces instructions, elle fait appel au gestionnaire d'`F33f`_`[arbre B`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Arbre_B]`_`f qui repose sur des couches de plus bas niveau dont le `F33f`_`[cache`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Mémoire_cache]`_`f des `F33f`_`[pages`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Pagination_(informatique)]`_`f `F33f`_`[disque`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Disque_dur]`_`f et sa `F33f`_`[couche d'abstraction matérielle`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Couche_d'abstraction_matérielle]`_`f`:cite-ref-11[`F5bf`_`[11`#cite-note-11]`_`f].
>>>Gestion des droits
SQLite n'intègre pas de gestion des `F33f`_`[droits d'accès`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Droit_d'accès_(informatique)]`_`f et de modification des données. La gestion est faite par le `F33f`_`[système de fichiers`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Système_de_fichiers]`_`f du `F33f`_`[système d'exploitation`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Système_d'exploitation]`_`f : si le fichier contenant la base de données n'est pas accessible en écriture à un utilisateur, ce dernier ne pourra également pas modifier les `F33f`_`[enregistrements`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Enregistrement_(base_de_données)]`_`f et la structure de la base de données.
La gestion des droits avec `B100`F9d9GRANT`f`b et `B100`F9d9REVOKE`f`b est donc inexistante, bien que ceux-ci fassent partie de la spécification `F33f`_`[SQL-92`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Structured_Query_Language]`_`f`:cite-ref-sql-features-that-sqlite-does-not-implement-12-0[`F5bf`_`[12`#cite-note-sql-features-that-sqlite-does-not-implement-12]`_`f].
L'utilisation d'une base SQLite ne nécessite aucune procédure d'installation ou de configuration`:cite-ref-13[`F5bf`_`[13`#cite-note-13]`_`f].
>>>Portabilité
La bibliothèque est entièrement écrite en `F33f`_`[C-ANSI`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=C_(langage)]`_`f, la version normalisée du `F33f`_`[langage de programmation`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Langage_de_programmation]`_`f `F33f`_`[C`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=C_(langage)]`_`f, et n'utilise aucune autre bibliothèque externe que la `F33f`_`[bibliothèque standard`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Bibliothèque_standard_du_C]`_`f du langage. Ceci rend SQLite `F33f`_`[compilable`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Compilateur]`_`f sans modification majeure sur toutes les `F33f`_`[architectures informatiques`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Architecture_informatique]`_`f mettant à disposition un compilateur C respectant la norme ANSI`:cite-ref-14[`F5bf`_`[14`#cite-note-14]`_`f].
Les fichiers de base de données de SQLite sont entièrement indépendants du système d'exploitation et de l'architecture sur laquelle ils sont utilisés. Le même fichier de base de données peut être utilisé sur deux architectures ayant un fonctionnement radicalement différent, SQLite fournissant une `F33f`_`[couche d'abstraction`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Abstraction_(informatique)]`_`f transparente pour le développeur. Les fichiers sont `F33f`_`[compatibles entre eux`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Compatibilité_ascendante_et_descendante]`_`f pour chaque version majeure de la bibliothèque depuis la version `B100`F9d93.0.0`f`b de SQLite, ainsi un fichier créé avec la version `B100`F9d93.0.0`f`b sera utilisable avec la version `B100`F9d93.6.19`f`b et vice-versa, les fichiers créés entre deux versions majeures différentes (`B100`F9d92.0.0`f`b et `B100`F9d93.0.0`f`b par exemple) peuvent s'avérer compatibles (en particulier en compatibilité ascendante), mais ce n'est pas toujours le cas`:cite-ref-15[`F5bf`_`[15`#cite-note-15]`_`f].
>>>Types de données
SQLite utilise un `F33f`_`[typage`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Typage]`_`f `F33f`_`[dynamique`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Typage_dynamique]`_`f pour le contenu des cellules, contrairement à la quasi-totalité des `F33f`_`[SGBD`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=SGBD]`_`f qui utilisent un `F33f`_`[typage statique`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Type_statique]`_`f : lors de la création d'une nouvelle table dans la base de données, c'est un type recommandé ou d'affinité, non forcé, de la donnée à stocker dans la colonne qui est renseigné et non un type qui définit la façon dont celle-ci sera représentée en mémoire, cette tâche étant réservée à la cellule elle-même. Lorsque des données seront entrées dans la base, SQLite tentera de convertir les nouvelles données vers le type recommandé mais ne le fera pas si cela s'avère impossible`:cite-ref-datatypes-in-sqlite-version-3-16-0[`F5bf`_`[16`#cite-note-datatypes-in-sqlite-version-3-16]`_`f].
Il existe plusieurs types d'affinité dans SQLite, ceux-ci définissant la façon dont SQLite va travailler lors de l'entrée des nouvelles données`:cite-ref-datatypes-in-sqlite-version-3-16-1[`F5bf`_`[16`#cite-note-datatypes-in-sqlite-version-3-16]`_`f] :
• `B100`F9d9TEXT`f`b : enregistre la donnée comme une `F33f`_`[chaine de caractères`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Chaine_de_caractères]`_`f, sans limite de taille. Si un nombre est entré dans une colonne de ce type, il sera automatiquement converti en une chaine de caractères ;
• `B100`F9d9NUMERIC`f`b : tente d'enregistrer la donnée comme un `F33f`_`[entier`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Entier_(informatique)]`_`f ou comme un `F33f`_`[réel`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Nombre_réel]`_`f, mais si cela s'avère impossible, la donnée sera enregistrée comme une chaine de caractères ;
• `B100`F9d9INTEGER`f`b : enregistre la donnée comme un entier si celle-ci peut être encodée sans perte, mais peut utiliser les types `B100`F9d9REAL`f`b ou `B100`F9d9TEXT`f`b si ça ne peut être fait ;
• `B100`F9d9REAL`f`b : enregistre la donnée comme un réel, même s'il s'agit d'un entier. Si la valeur est trop grande, la donnée sera convertie en chaine de caractères ;
• `B100`F9d9NONE`f`b : la donnée est enregistrée telle quelle, sans conversion.
Ainsi, chaque type d'affinité peut accepter n'importe quel type de donnée, la seule exception est le type particulier `B100`F9d9INTEGER PRIMARY KEY`f`b, lorsqu'il est appliqué sur une seule colonne, car il ne s'agit pas d'un type habituel mais d'un alias à la colonne interne au moteur `B100`F9d9`F33f`_`[ROWID`#rowid-et-autoincrement]`_`f`f`b qui correspond à l'adresse de l'enregistrement, unique à travers la table`:cite-ref-sqlite-query-language-create-table-17-0[`F5bf`_`[17`#cite-note-sqlite-query-language-create-table-17]`_`f].
L'utilisation d'un typage dynamique améliore l'homogénéité entre les données de la base de données et les types du langage utilisé pour l'interroger si celui-ci est également un langage au typage dynamique (comme `F33f`_`[Python`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Python_(langage)]`_`f, `F33f`_`[PHP`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=PHP]`_`f, `F33f`_`[Perl`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Perl_(langage)]`_`f ou `F33f`_`[Ruby`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Ruby]`_`f) sans poser de réels problèmes avec les langages utilisant un typage statique (comme `F33f`_`[C`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=C_(langage)]`_`f/`F33f`_`[C++`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=C++]`_`f ou `F33f`_`[Java`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_(langage)]`_`f).
>>>>Détermination du type d'affinité
Pour maintenir la compatibilité avec les autres `F33f`_`[bases de données relationnelles`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Base_de_données_relationnelle]`_`f, SQLite convertit automatiquement les noms des types déclarés dans le type d'affinité correspondant le mieux, ainsi :
• tous les noms de type contenant le mot clé `B100`F9d9INT`f`b seront reconnus comme des champs `B100`F9d9INTEGER`f`b. Cependant, seule la déclaration `B100`F9d9INTEGER PRIMARY KEY`f`b sera reconnue comme un alias du `B100`F9d9ROWID`f`b ;
• tous les noms de type contenant un des `F33f`_`[mots clés`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Mot_clé]`_`f suivants : `B100`F9d9CHAR`f`b (ceci comprend `B100`F9d9VARCHAR`f`b), `B100`F9d9CLOB`f`b ou `B100`F9d9TEXT`f`b seront reconnus comme des champs `B100`F9d9TEXT`f`b ;
• tous les noms de type contenant le mot clé `B100`F9d9BLOB`f`b seront reconnus comme des champs à l'affinité `B100`F9d9NONE`f`b ;
• tous les noms de type contenant un des mots clés suivants : `B100`F9d9REAL`f`b, `B100`F9d9FLOAT`f`b ou `B100`F9d9DOUBLE`f`b seront reconnus comme des champs `B100`F9d9REAL`f`b ;
• dans tous les autres cas, ou si le type n'est pas renseigné, c'est l'affinité `B100`F9d9NUMERIC`f`b qui sera utilisée.
>>>>Classes de stockage
Bien que SQLite utilise un typage dynamique, la représentation en mémoire et les traitements effectués sur les données nécessitent l'utilisation de différentes classes de stockage. Ceci est uniquement valable pour la version 3 et ses versions ultérieures, car les données étaient enregistrées comme des chaines de caractères dans les versions antérieures.
Toutes les données manipulées par le moteur de base de données utilisent l'un des types suivants`:cite-ref-datatypes-in-sqlite-version-3-16-2[`F5bf`_`[16`#cite-note-datatypes-in-sqlite-version-3-16]`_`f] :
• `B100`F9d9NULL`f`b : la donnée correspond au type spécial `B100`F9d9`F33f`_`[NULL`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=NULL]`_`f`f`b, qui indique l'absence d'information ou une valeur non définie ;
• `B100`F9d9INTEGER`f`b : la donnée est un `F33f`_`[nombre entier signé`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Format_de_données]`_`f et celui-ci est enregistré, en fonction de son `F33f`_`[ordre de grandeur`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Ordre_de_grandeur]`_`f, sur 1, 2, 3, 4, 6 ou 8 `F33f`_`[octets`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Octet]`_`f, mais en mémoire, c'est converti en 8 octets (8-byte signed integer`:cite-ref-datatypes-in-sqlite-version-3-16-3[`F5bf`_`[16`#cite-note-datatypes-in-sqlite-version-3-16]`_`f]) ;
• `B100`F9d9REAL`f`b : la donnée est un nombre à `F33f`_`[virgule flottante`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Virgule_flottante]`_`f enregistré sur 8 octets selon la `F33f`_`[norme IEEE`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=IEEE_754]`_`f ;
• `B100`F9d9TEXT`f`b : la donnée est une chaine de caractères, encodée en `F33f`_`[UTF-8`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=UTF-8]`_`f (par défaut`:cite-ref-18[`F5bf`_`[18`#cite-note-18]`_`f]), `F33f`_`[UTF-16-BE`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=UTF-16]`_`f ou `F33f`_`[UTF-16-LE`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=UTF-16]`_`f ;
• `B100`F9d9BLOB`f`b : la donnée est enregistrée comme elle a été donnée.
>>>>Type NULL
La norme ne définit pas exactement de quelle façon doit être traité le type `B100`F9d9`F33f`_`[NULL`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=NULL]`_`f`f`b.
Comme pour la majorité des bases de données relationnelles, tous les enregistrements `B100`F9d9NULL`f`b sont considérés comme distincts par la contrainte `B100`F9d9UNIQUE`f`b mais sont considérés comme identiques par l'opérateur `B100`F9d9UNION`f`b et par le mot clé `B100`F9d9DISTINCT`f`b`:cite-ref-19[`F5bf`_`[19`#cite-note-19]`_`f].
Les opérations arithmétiques comprenant un type `B100`F9d9NULL`f`b dans leur expression retournent la valeur `B100`F9d9UNKNOWN`f`b (valeur indéterminée). Dans les `F33f`_`[opérations booléennes`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Algèbre_de_Boole_(logique)]`_`f, la valeur de retour pourrait être `B100`F9d9UNKNOWN`f`b si un type `B100`F9d9NULL`f`b intervient et que le résultat ne peut être déterminé avec certitude : `B100`F9d9NULL OR 1`f`b donnera la valeur `B100`F9d91`f`b, mais `B100`F9d9NULL OR 0`f`b donnera la valeur `B100`F9d9UNKNOWN`f`b car l'opération ne peut être résolue avec certitude.
>>>>Dates
SQLite ne possède pas de type pour représenter des dates. Cependant, un ensemble de fonctions existe pour manipuler celles-ci. Le stockage d'une date peut se faire dans une chaine de caractères sous sa forme `F33f`_`[ISO 8601`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=ISO_8601]`_`f ou dans un entier sous la forme d'un `F33f`_`[timestamp UNIX`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Timestamp_(informatique)]`_`f`:cite-ref-20[`F5bf`_`[20`#cite-note-20]`_`f].
>>>Contraintes
SQLite gère les contraintes sur une ou plusieurs colonnes. Les contraintes `B100`F9d9NOT NULL`f`b, `B100`F9d9CHECK`f`b, `B100`F9d9DEFAULT`f`b et `B100`F9d9COLLATE`f`b sont déclarées sur la colonne`:cite-ref-syntax-21-0[`F5bf`_`[21`#cite-note-syntax-21]`_`f] alors que les contraintes `B100`F9d9PRIMARY KEY`f`b, `B100`F9d9UNIQUE`f`b, `B100`F9d9CHECK`f`b et `B100`F9d9FOREIGN KEY`f`b peuvent être déclarées sur une ou plusieurs colonnes`:cite-ref-syntax-21-1[`F5bf`_`[21`#cite-note-syntax-21]`_`f].
La contrainte `B100`F9d9UNIQUE`f`b crée automatiquement un `F33f`_`[index`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Index_(base_de_données)]`_`f sur la ou les colonnes sur lesquelles elle est appliquée`:cite-ref-sqlite-query-language-create-table-17-1[`F5bf`_`[17`#cite-note-sqlite-query-language-create-table-17]`_`f].
>>>>PRIMARY KEY
La contrainte de `F33f`_`[clé primaire`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Clé_primaire]`_`f va créer une contrainte `B100`F9d9UNIQUE`f`b sur la ou les colonnes concernées, cependant, et contrairement à `F33f`_`[la norme`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Structured_Query_Language]`_`f, la contrainte `B100`F9d9PRIMARY KEY`f`b de SQLite autorise des entrées ayant la valeur `B100`F9d9NULL`f`b. Il s'agit d'un non-respect de la norme, et cet écart pourrait être réglé dans les prochaines versions`:cite-ref-sqlite-query-language-create-table-17-2[`F5bf`_`[17`#cite-note-sqlite-query-language-create-table-17]`_`f]. Il est donc conseillé de rajouter la contrainte `B100`F9d9NOT NULL`f`b à la déclaration d'une clé primaire.
>>>>ROWID et AUTOINCREMENT
Chaque ligne d'une table est identifiée par un entier signé de 64 bits appelé `B100`F9d9ROWID`f`b. Lorsqu'une table est déclarée avec une et une seule colonne `B100`F9d9INTEGER PRIMARY KEY`f`b, cette colonne devient un alias du `B100`F9d9ROWID`f`b. L'utilisation d'un alias à l'identifiant `B100`F9d9ROWID`f`b permet d'augmenter la vitesse des recherches, celles-ci pouvant être jusqu'à deux fois plus rapides qu'avec une clé primaire normale associée à son index d'unicité`:cite-ref-sqlite-query-language-create-table-17-3[`F5bf`_`[17`#cite-note-sqlite-query-language-create-table-17]`_`f].
Lorsque la table est vide, l'algorithme attribue la valeur `B100`F9d91`f`b à l'identifiant, qu'il incrémente pour chaque nouvel enregistrement, jusqu'à atteindre la limite d'un entier signé de 64 bits ( 2 63 − − 1 = 9223372036854775807 {\\displaystyle 2^{63}-1=9223372036854775807} ). Une fois cette limite atteinte, il va réutiliser les espaces libérés par les enregistrements supprimés. L'attribution des identifiants n'est donc plus incrémentale mais aléatoire`:cite-ref-sqlite-autoincrement-22-0[`F5bf`_`[22`#cite-note-sqlite-autoincrement-22]`_`f].
Il est possible d'utiliser le mot clé `B100`F9d9AUTOINCREMENT`f`b. Ce dernier modifie légèrement l'algorithme : une fois la limite d'un entier atteinte, il ne sera plus possible d'insérer un nouvel enregistrement. Ceci permet de garantir qu'un même identifiant ne sera jamais porté par deux enregistrements distincts, même s'ils ne coexistent pas à un même moment`:cite-ref-sqlite-autoincrement-22-1[`F5bf`_`[22`#cite-note-sqlite-autoincrement-22]`_`f].
>>>>FOREIGN KEY
Depuis la version `B100`F9d93.6.19`f`b, SQLite est apte à gérer les contraintes de `F33f`_`[clé étrangère`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Clé_étrangère]`_`f.
Pour des raisons de compatibilité descendante, le support des clés étrangères n'est pas activé par défaut. L'activation se fait par le `F33f`_`[pragma`#pragmas]`_`f `B100`F9d9foreign_keys`f`b`:cite-ref-foreign-23-0[`F5bf`_`[23`#cite-note-foreign-23]`_`f].
Toute colonne référencée par une clé étrangère doit être déclarée comme `B100`F9d9UNIQUE`f`b (`B100`F9d9PRIMARY KEY`f`b crée une clé d'unicité)`:cite-ref-foreign-23-1[`F5bf`_`[23`#cite-note-foreign-23]`_`f]. SQLite ne prend pas encore en compte la clause `B100`F9d9MATCH`f`b dans la définition des clés étrangères`:cite-ref-foreign-23-2[`F5bf`_`[23`#cite-note-foreign-23]`_`f].
>>>Déclencheurs
SQLite gère d'une manière assez complète les déclencheurs (triggers en anglais). Des déclencheurs `B100`F9d9BEFORE`f`b, `B100`F9d9AFTER`f`b ou `B100`F9d9INSTEAD OF`f`b peuvent être déclarés. SQLite supporte l'option `B100`F9d9FOR EACH ROW`f`b (fonctionnement par défaut) mais pas `B100`F9d9FOR EACH STATEMENT`f`b`:cite-ref-24[`F5bf`_`[24`#cite-note-24]`_`f].
>>>Vues
SQLite permet la création de `F33f`_`[vues`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Vue_(base_de_données)]`_`f pour alléger la longueur des requêtes.
Les vues sont en lecture seule, mais il est possible d'utiliser des déclencheurs avec la propriété `B100`F9d9INSTEAD OF`f`b pour simuler la possibilité de modifier celles-ci`:cite-ref-sqlite-query-language-create-view-25-0[`F5bf`_`[25`#cite-note-sqlite-query-language-create-view-25]`_`f].
>>>Transactions
Toutes les commandes SQL visant à modifier l'état de la base de données (à peu près tout autre ordre que `B100`F9d9SELECT`f`b) impliquent la création d'une `F33f`_`[transaction`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Transaction_(base_de_données)]`_`f qui leur est dédiée, pour autant qu'une transaction qui inclut la commande ne soit déjà créée. Ceci signifie que toutes les commandes sont `F33f`_`[atomiques`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Atomicité_(Informatique)]`_`f. Si l'exécution de la commande ne provoque pas d'erreur, la modification est automatiquement validée (autocommit), mais si ce n'est pas le cas, l'intégralité des modifications effectuées par la commande est annulée.
Toutes les modifications sur la base de données sont sérialisées : une seule modification est effectuée à la fois et la base est `F33f`_`[verrouillée`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Verrou_(informatique)]`_`f en lecture lors d'une modification.
SQLite permet la création de transactions ainsi que la création de points de retour`:cite-ref-26[`F5bf`_`[26`#cite-note-26]`_`f] (`B100`F9d9SAVEPOINT`f`b) mais ne permet pas de gérer différents degrés d'isolation. Dans une transaction, lors du premier appel à une commande de lecture, un verrou partagé`:cite-ref-27[`F5bf`_`[27`#cite-note-27]`_`f] est activé qui autorise l'accès en lecture mais interdit toute modification des données par une autre transaction, lors du premier appel en écriture, l'ensemble de la base est verrouillée en lecture et en écriture pour les autres transactions`:cite-ref-sqlite-query-language-begin-transaction-28-0[`F5bf`_`[28`#cite-note-sqlite-query-language-begin-transaction-28]`_`f].
>>>>ACID
Même si SQLite respecte à première vue l'ensemble des `F33f`_`[propriétés ACID`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Propriétés_ACID]`_`f, qui déterminent la fiabilité d'un système transactionnel, il reste possible de placer la base de données dans un état incohérent du fait que les types ne sont pas forcés : il est possible, par exemple, d'insérer une `F33f`_`[chaine de caractères`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Chaine_de_caractères]`_`f dans une colonne dont le type d'affinité est défini comme un `F33f`_`[entier`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Entier_(informatique)]`_`f. Dans leurs interprétations strictes, SQLite ne respecte pas l'ensemble des propriétés ACID.
>>>Tables temporaires
SQLite permet la création de tables temporaires dont la définition, les données et les index ne sont pas enregistrés dans le fichier de la base de données et sont donc perdus lors de la fermeture de celle-ci`:cite-ref-sqlite-query-language-create-table-17-4[`F5bf`_`[17`#cite-note-sqlite-query-language-create-table-17]`_`f].
>>>Tables virtuelles
Il est possible de créer, directement depuis la bibliothèque, son propre moteur de stockage pour simuler une table de la base de données. La création d'une table virtuelle se fait par l'implémentation d'un ensemble de fonctions. L'accès à la table se fait de façon tout à fait transparente, hormis l'absence de certaines fonctionnalités (impossible de créer des déclencheurs ou des index ou de modifier la structure de la table)`:cite-ref-the-virtual-table-mechanism-of-sqlite-29-0[`F5bf`_`[29`#cite-note-the-virtual-table-mechanism-of-sqlite-29]`_`f].
Ce mécanisme permet l'accès à l'aide du langage SQL à toute sorte de source de données, comme des fichiers `F33f`_`[CSV`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Comma-separated_values]`_`f ou `F33f`_`[XML`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=XML]`_`f.
>>>Fonctions utilisateur
SQLite offre une interface de programmation, via sa bibliothèque, pour la création de `F33f`_`[fonctions`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Fonction_(informatique)]`_`f utilisateur. L'ensemble de fonctions définies par la bibliothèque peuvent être `F33f`_`[surchargées`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Surcharge_des_opérateurs]`_`f, pour redéfinir leur implémentation. Certains opérateurs, comme `B100`F9d9LIKE`f`b utilisent en sous-couche des fonctions éponymes qui peuvent elles aussi être remplacées par des fonctions définies par l'utilisateur`:cite-ref-30[`F5bf`_`[30`#cite-note-30]`_`f].
SQLite ne supporte pas la création de `F33f`_`[procédures`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Procédure_(informatique)]`_`f, mais leur nécessité est moindre du fait de l'architecture embarquée.
>>>Index
SQLite permet la création d'`F33f`_`[index`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Index_(base_de_données)]`_`f sur une ou plusieurs colonnes. Les index peuvent être montants (`B100`F9d9ASC`f`b) ou descendants (`B100`F9d9DESC`f`b) ainsi qu'uniques (ceci s'apparente à la création d'une contrainte d'unicité)`:cite-ref-31[`F5bf`_`[31`#cite-note-31]`_`f]. SQLite utilise ses index en `F33f`_`[arbre B`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Arbre_B]`_`f.
SQLite introduit le mot clé `B100`F9d9EXPLAIN`f`b qui permet de décrire les étapes nécessaires à l'exécution d'une commande ainsi que les index utilisés`:cite-ref-32[`F5bf`_`[32`#cite-note-32]`_`f].
>>>Pragmas
Les pragmas sont des paires de clés/valeurs de configuration de SQLite. Ils sont internes à une base de données et permettent de décrire de quelle façon SQLite doit interpréter certaines opérations`:cite-ref-33[`F5bf`_`[33`#cite-note-33]`_`f]. Ils permettent également d'activer ou de désactiver certaines fonctionnalités, notamment pour des raisons de compatibilité descendante.
>>>Adoption
Outre son implantation officielle en `F33f`_`[C`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=C_(langage)]`_`f, des `F33f`_`[bindings`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Binding]`_`f pour d'autres `F33f`_`[langages`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Langage_de_programmation]`_`f existent (`F33f`_`[C++`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=C++]`_`f, `F33f`_`[Perl`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Perl_(langage)]`_`f, `F33f`_`[Ruby`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Ruby]`_`f, `F33f`_`[TCL`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Tool_Command_Language]`_`f, les langages utilisant le `F33f`_`[framework .NET`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=.NET_Framework]`_`f via un pilote `F33f`_`[ADO.NET`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=ADO.NET]`_`f`:cite-ref-system-data-sqlite-34-0[`F5bf`_`[34`#cite-note-system-data-sqlite-34]`_`f]...).
Quelques langages de programmation incluent SQLite dans leur `F33f`_`[bibliothèque standard`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Bibliothèque_standard]`_`f, c'est le cas, entre autres, de `F33f`_`[Python`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Python_(langage)]`_`f`:cite-ref-35[`F5bf`_`[35`#cite-note-35]`_`f] (depuis la version 2.5) et de `F33f`_`[PHP`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=PHP:_Hypertext_Preprocessor]`_`f`:cite-ref-36[`F5bf`_`[36`#cite-note-36]`_`f] (depuis la version 5).
SQLite est utilisée dans de nombreux `F33f`_`[logiciels libres`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Logiciel_libre]`_`f, comme `F33f`_`[Mozilla Firefox`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Mozilla_Firefox]`_`f ou `F33f`_`[SPIP`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=SPIP_(logiciel)]`_`f (depuis 2007)`:cite-ref-37[`F5bf`_`[37`#cite-note-37]`_`f], dans de nombreuses distributions `F33f`_`[GNU/Linux`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=GNU/Linux]`_`f, dans les `F33f`_`[systèmes d'exploitation`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Système_d'exploitation]`_`f serveurs et de bureau comme `F33f`_`[Solaris`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Solaris_(système_d'exploitation)]`_`f ou mobiles comme `F33f`_`[Android`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Android]`_`f, `F33f`_`[Firefox OS`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Firefox_OS]`_`f ou `F33f`_`[Symbian`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Symbian_OS]`_`f, dans certains logiciels d'`F33f`_`[Apple`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Apple]`_`f, de `F33f`_`[Google`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Google]`_`f, d'`F33f`_`[Adobe`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Adobe_Systems]`_`f et de `F33f`_`[McAfee`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=McAfee]`_`f ainsi que dans certains appareils de `F33f`_`[Philips`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Philips]`_`f`:cite-ref-well-known-users-of-sqlite-4-1[`F5bf`_`[4`#cite-note-well-known-users-of-sqlite-4]`_`f].
SQLite est également offerte avec la version 8.4 du Logiciel Primavera P6 d'Oracle.
Le brouillon concernant le stockage d'une base de données SQL du côté du `F33f`_`[navigateur web`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Navigateur_web]`_`f publiée par le `F33f`_`[W3C`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=W3C]`_`f stipule également que les logiciels implémentant cette fonctionnalité doivent être capable d'interpréter correctement le dialecte de SQLite dans sa version `*3.6.19`*`:cite-ref-38[`F5bf`_`[38`#cite-note-38]`_`f]. Même si SQLite n'est pas imposé par le W3C, `F33f`_`[Google Chrome`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Google_Chrome]`_`f`:cite-ref-39[`F5bf`_`[39`#cite-note-39]`_`f], `F33f`_`[Apple Safari`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Safari_(logiciel)]`_`f`:cite-ref-40[`F5bf`_`[40`#cite-note-40]`_`f] et `F33f`_`[Opera Browser`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Opera_Browser]`_`f`:cite-ref-41[`F5bf`_`[41`#cite-note-41]`_`f] l'utilisent pour cet usage.
>>Différentes versions
SQLite existe sous 2 principales versions : 2.x et 3.x. Les versions 2 et 3 de SQLite se distinguent par plusieurs évolutions :
• les fichiers des bases ne sont pas toujours compatibles entre eux. Cela signifie qu’une base au format SQLite 2 ne pourra pas être lue à coup sûr par SQLite 3 et `*vice versa`* ;
• des syntaxes SQL ne sont pas présentes en SQLite 2 : `B100`F9d9IF NOT EXISTS`f`b pour les requêtes, et `B100`F9d9CREATE TABLE`f`b, `B100`F9d9ADD COLUMN`f`b et `B100`F9d9RENAME COLUMN`f`b pour les requêtes `B100`F9d9ALTER TABLE`f`b ;
• seules les versions les plus récentes de SQLite prennent en charge certaines fonctionnalités plus avancées, comme la gestion des `F33f`_`[clés étrangères`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Clé_étrangère]`_`f ou les contraintes `B100`F9d9CHECK`f`b ;
• SQLite 3 prend en charge les normes `F33f`_`[UTF-8`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=UTF-8]`_`f et `F33f`_`[UTF-16`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=UTF-16]`_`f ;
• SQLite 3 encode les identifiants de lignes sur `F33f`_`[64 bits`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=64_bits]`_`f et non plus sur `F33f`_`[32 bits`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=32_bits]`_`f, ce qui permet un nombre de lignes quasiment illimité ;
• PHP utilise une classe `F33f`_`[PDO`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=PHP_Data_Objects]`_`f ou, avec PHP 5.3, des fonctions `B100`F9d9sqlite3_*()`f`b pour gérer SQLite 3 alors qu’il utilise des fonctions `B100`F9d9sqlite_*()`f`b pour SQLite 2.
>>Utilisations
>>>Systèmes d'exploitation
SQLite est installé par défaut sur les systèmes suivants :
• `F33f`_`[Android`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Android]`_`f
• `F33f`_`[BlackBerry 10 OS`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=BlackBerry_10]`_`f
• `F33f`_`[FreeBSD`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=FreeBSD]`_`f
• `F33f`_`[illumos`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Illumos]`_`f
• `F33f`_`[iOS`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=IOS]`_`f
• `F33f`_`[Mac OS X 10.4`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Mac_OS_X_v10.4]`_`f (et les versions suivantes de `F33f`_`[Mac OS`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=MacOS]`_`f)
• `F33f`_`[Maemo`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Maemo]`_`f
• `F33f`_`[MeeGo`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=MeeGo]`_`f
• `F33f`_`[MorphOS`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=MorphOS]`_`f
• `F33f`_`[NetBSD`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=NetBSD]`_`f
• `F33f`_`[Solaris 10`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Solaris_(système_d'exploitation)]`_`f
• `F33f`_`[Symbian OS`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Symbian_OS]`_`f
• `F33f`_`[Tizen`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Tizen]`_`f
• `F33f`_`[webOS`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=WebOS]`_`f
• `F33f`_`[Windows 10`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Windows_10]`_`f, et les versions suivantes de Windows
>>Notes et références
`:cite-note-wikidata-dbf86f20123c0534703f2f60bd6ddbbd36b2b3d9-1`!1.`! « SQLite Release 3.50.4 On 2025-07-30 », 30 juillet 2025 (consulté le 30 juillet 2025)
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f « SQLite Copyright », sur www.sqlite.org
`:cite-note-about-sqlite-3`!3.`! « About SQLite », sur www.sqlite.org
`:cite-note-well-known-users-of-sqlite-4`!4.`! « Well-Known Users Of SQLite », sur www.sqlite.org
`:cite-note-5`!5.`! `F0af`_`[↑`#cite-ref-5]`_`f « Most Widely Deployed SQL Database Engine », sur www.sqlite.org
`:cite-note-owens06-6`!6.`! `F0af`_`[↑`#cite-ref-owens06-6-0]`_`f `:owens2006`a`:michael-owens2006`a(en) Michael Owens, The Definitive Guide to SQLite, Berkeley, Apress, 2006 (`F33f`_`[ISBN`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=International_Standard_Book_Number]`_`f 978-1-59059-673-9, `F33f`_`[DOI`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Digital_Object_Identifier]`_`f 10.1007/978-1-4302-0172-4_1)
`:cite-note-7`!7.`! `F0af`_`[↑`#cite-ref-7]`_`f « LoC Recommended Storage Format » (consulté le 1er novembre 2023)
`:cite-note-8`!8.`! `F0af`_`[↑`#cite-ref-8]`_`f (en) « Sustainability of Digital Formats: Planning for Library of Congress Collections — SQLite, Version 3 » (consulté le 1er novembre 2023)
`:cite-note-9`!9.`! `F0af`_`[↑`#cite-ref-9]`_`f « The SQLite Bytecode Engine », sur www.sqlite.org
`:cite-note-10`!10.`! `F0af`_`[↑`#cite-ref-10]`_`f « The Virtual Database Engine of SQLite », sur www.sqlite.org
`:cite-note-11`!11.`! `F0af`_`[↑`#cite-ref-11]`_`f « Architecture of SQLite », sur www.sqlite.org
`:cite-note-sql-features-that-sqlite-does-not-implement-12`!12.`! `F0af`_`[↑`#cite-ref-sql-features-that-sqlite-does-not-implement-12-0]`_`f « SQL Features That SQLite Does Not Implement », sur www.sqlite.org
`:cite-note-13`!13.`! `F0af`_`[↑`#cite-ref-13]`_`f « Zero-Configuration », sur www.sqlite.org
`:cite-note-14`!14.`! `F0af`_`[↑`#cite-ref-14]`_`f « SQLite is a Self Contained System », sur www.sqlite.org
`:cite-note-15`!15.`! `F0af`_`[↑`#cite-ref-15]`_`f « SQLite: Single File Database », sur www.sqlite.org
`:cite-note-datatypes-in-sqlite-version-3-16`!16.`! « Datatypes In SQLite Version 3 », sur www.sqlite.org
`:cite-note-sqlite-query-language-create-table-17`!17.`! « SQLite Query Language: CREATE TABLE », sur www.sqlite.org
`:cite-note-18`!18.`! `F0af`_`[↑`#cite-ref-18]`_`f « SQLite Version 3 Overview », sur www.sqlite.org
`:cite-note-19`!19.`! `F0af`_`[↑`#cite-ref-19]`_`f « NULL Handling in SQLite », sur www.sqlite.org
`:cite-note-20`!20.`! `F0af`_`[↑`#cite-ref-20]`_`f « SQLite Query Language: Date And Time Functions », sur www.sqlite.org
`:cite-note-syntax-21`!21.`! « Syntax Diagrams For SQLite », sur www.sqlite.org
`:cite-note-sqlite-autoincrement-22`!22.`! « SQLite Autoincrement », sur www.sqlite.org
`:cite-note-foreign-23`!23.`! « SQLite Foreign Key Support », sur www.sqlite.org
`:cite-note-24`!24.`! `F0af`_`[↑`#cite-ref-24]`_`f « SQLite Query Language: CREATE TRIGGER », sur www.sqlite.org
`:cite-note-sqlite-query-language-create-view-25`!25.`! `F0af`_`[↑`#cite-ref-sqlite-query-language-create-view-25-0]`_`f « SQLite Query Language: CREATE VIEW », sur www.sqlite.org
`:cite-note-26`!26.`! `F0af`_`[↑`#cite-ref-26]`_`f « SQLite Query Language: SAVEPOINT », sur www.sqlite.org
`:cite-note-27`!27.`! `F0af`_`[↑`#cite-ref-27]`_`f « File Locking And Concurrency In SQLite Version 3 », sur www.sqlite.org
`:cite-note-sqlite-query-language-begin-transaction-28`!28.`! `F0af`_`[↑`#cite-ref-sqlite-query-language-begin-transaction-28-0]`_`f « SQLite Query Language: BEGIN TRANSACTION », sur www.sqlite.org
`:cite-note-the-virtual-table-mechanism-of-sqlite-29`!29.`! `F0af`_`[↑`#cite-ref-the-virtual-table-mechanism-of-sqlite-29-0]`_`f « The Virtual Table Mechanism Of SQLite », sur www.sqlite.org
`:cite-note-30`!30.`! `F0af`_`[↑`#cite-ref-30]`_`f « SQLite Query Language: Core Functions », sur www.sqlite.org
`:cite-note-31`!31.`! `F0af`_`[↑`#cite-ref-31]`_`f « SQLite Query Language: CREATE INDEX », sur www.sqlite.org
`:cite-note-32`!32.`! `F0af`_`[↑`#cite-ref-32]`_`f « SQLite Query Language: EXPLAIN », sur www.sqlite.org
`:cite-note-33`!33.`! `F0af`_`[↑`#cite-ref-33]`_`f « Pragma statements supported by SQLite », sur www.sqlite.org
`:cite-note-system-data-sqlite-34`!34.`! `F0af`_`[↑`#cite-ref-system-data-sqlite-34-0]`_`f http://sqlite.phxsoftware.com/
`:cite-note-35`!35.`! `F0af`_`[↑`#cite-ref-35]`_`f « sqlite3 — DB-API 2.0 interface for SQLite databases — Python 3.7.3 documentation », sur docs.python.org
`:cite-note-36`!36.`! `F0af`_`[↑`#cite-ref-36]`_`f « PHP: Hypertext Preprocessor », sur www.php.net
`:cite-note-37`!37.`! `F0af`_`[↑`#cite-ref-37]`_`f `:a-marcillaud2007`a`:d-esse-a-matthieu-marcillaud2007`aDéesse A. et Matthieu Marcillaud, « Portage de SPIP en SQLite », sur contrib.spip.net, 16 décembre 2007 (consulté le 14 décembre 2021)
`:cite-note-38`!38.`! `F0af`_`[↑`#cite-ref-38]`_`f « Web SQL Database », sur dev.w3.org
`:cite-note-39`!39.`! `F0af`_`[↑`#cite-ref-39]`_`f « More Resources for Developers »
`:cite-note-40`!40.`! `F0af`_`[↑`#cite-ref-40]`_`f « WebKit HTML 5 SQL Storage Notes Demo », sur webkit.org
`:cite-note-41`!41.`! `F0af`_`[↑`#cite-ref-41]`_`f « Dev.Opera — Blog », sur dev.opera.com
>>Liens externes
• Site officiel
• (en) `*The SQLite Consortium`*, `F33f`_`[Mitchell Baker`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Mitchell_Baker]`_`f, le 27 février 2008.
• SQLite devient la base de données standard du Web déconnecté, David Maume, `F33f`_`[01net`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=01net_(site_web)]`_`f, 29 février 2008.
• Portail des bases de données
• Portail des logiciels libres
`c`F0af`_`[↑ Back to top`#top]`_`f`a